<?php 
class Sedf_Filter_Caminho implements Zend_Filter_Interface
{
    public function filter($nome)
    {
        if ($nome == '') {
            $nome = '/';
        }

        //-- Evita invasão por tentativa de voltar pastas.
        $nome = str_replace('.', '', $nome);              
        while(strpos($nome, '//') !== false)
            $nome = str_replace('//', '/', $nome);           


        //-- Gera array para verificação unitária
        $verif_dir = explode('/', $nome);
        if (!empty ($verif_dir)) {
            foreach ($verif_dir as $pastas) {
                $pastas = Unimed_Filter_RemoverAcentos::filtro($pastas);                # Remove acentos
                $pastas = str_replace('-', 'Ç', $pastas);                               # Transforma traço em Ç (evitar sumir com o traço)
                $pastas = str_replace('_', 'é', $pastas);                               # Transforma underline em é (evitar sumir com o underline)
                $pastas = Zend_Filter::filterStatic($pastas, 'Alnum', array(true));     # Permitir apenas Letras-Numeros-Underline
                $pastas = str_replace('é', '_', $pastas);                               # Retornar o underline para o lugar
                $pastas = str_replace('Ç', '-', $pastas);                               # Retornar o traço para o lugar
                $pastas = substr($pastas, 0, 35);

                $Nomes .= $pastas .'/';
            }
        }

        return str_replace('//', '/', $Nomes ? $Nomes : '/');
    }
    
    
    
    public static function filtro($value)
    {
        $filtro = new Sedf_Filter_Caminho();
        return $filtro->filter($value);
    }    
}